▐u JAVA DedikleriJava... Son gⁿnlerin en popⁿler kavram²... Peki Java hakk²nda neler biliyorsunuz? Peki ya JavaScript hakk²nda? PC kullan²c²s²ndan program geli■tiricisine, s÷rfτⁿsⁿnden Web sayfas² tasarlayanlara kadar herkesin merak etti≡i bu kavramlara aτ²kl²k getiriyoruz.S: Son zamanlarda bir Java'd²r gidiyor. Nedir abi bu Java, yenir mi iτilir mi? Kelime anlam²na bak²l²rsa iτilir. Java asl²nda bir tⁿr kahve ve bu yⁿzden bilgisayar alan²ndaki Java'n²n amblemi de duman² tⁿten bir fincan s²cak kahve. Bizim konu■tu≡umuz Java ise, Sun Microsystems'in geli■tirdi≡i bir programlama dili. ╓zelli≡i ise her tⁿrlⁿ i■letim sisteminde yeniden derlemeye gerek kalmadan τal²■abilmesi. Java'y² destekleyen Web browser'lar sayesinde belli ba■l² tⁿm i■letim sistemlerinde τal²■abiliyor. Bunlar² k²saca sayacak olursak Windows, Windows 95, Windows NT, Apple Macintosh, OS/2, Unix (Sun Solaris, IBM AIX, Digital Alpha, HP-UX, Linux, SCO, v.b.). Ana bilgisayar i■letim sistemleri ve hatta DOS ortam²nda bile τal²■abiliyor. Bunu Java Virtual Machine (JVM - Java Sanal Makine) denilen bir yorumlay²c² sayesinde gerτekle■tiriyorlar. Java programlar² yaz²ld²ktan sonra derleniyor ve bir kod elde ediliyor. Bu kodu da Web browser'lar iτerisine yerle■tirilmi■ Java Virtual Machine'ler τal²■t²r²yor. S: Yani bir Java program²n² τal²■t²rmak iτin illa bir Web browser m² kullanmam laz²m. Bu pek de akla yatk²n de≡il. Niye ⁿzerine τift t²klay²nca τal²■m²yor? ▄zerine τift t²klay²nca τal²■m²yor τⁿnkⁿ Java derlendikten sonra τal²■abilir bir EXE dosya haline gelmiyor. Bu kodun τal²■mas² iτin bir JVM'e ihtiyaτ var. IBM, OS/2 Warp 4.0 i■letim sistemine bu JVM'i entegre etti ve b÷yle ve OS/2 kullan²c²lar² Java programlar² ⁿzerine τift t²klayarak τal²■t²rabiliyorlar. IBM bu ÷zelli≡i AIX i■letim sistemi bⁿyⁿk ana bilgisayarlar²n²n i■letim sistemlerine eklemek iτin τal²■²yor. Sun da NC denilen bilgisayarlar iτin geli■tirdi≡i Java i■letim sistemine bu ÷zelli≡i ekledi; daha do≡rusu Java i■letim sistemi Java uygulamalar²n² τal²■t²rmak ⁿzerine geli■tirildi. Ba■ka birτok i■letim sistemi ⁿreten firma da bu konuda τal²■malar²n² sⁿrdⁿrⁿyor. Microsoft ise Internet Explorer'² masaⁿstⁿne entegre ediyor. Internet Explorer da Java uyumlu oldu≡u iτin bu sⁿrⁿm piyasaya τ²kt²ktan sonra Windows 95 ve NT'de de Java programlar²n² ⁿzerine t²klayarak τal²■t²rabilece≡iz. S: Tamam bu Java her yerde τal²■abiliyor, onu anlad²k. Ama bu ne i■imize yarayacak? Bugⁿn herhangi bir dil ile yazd²≡²m²z program² sadece bir i■letim sistemi iτin geli■tirebiliyoruz. Java ise bu s²n²r² ortadan kald²r²yor. Java'n²n Internet ile beraber yayg²nla■mas²n²n temel sebebi de bu. Internet ⁿzerinde bir program²n hangi i■letim sistemi kullanan bilgisayar taraf²ndan τal²■t²r²laca≡²n² ÷nceden kestirmeniz imkans²z. Bu durumda yazd²≡²n²z program²n her tⁿrlⁿ bilgisayarda τal²■mas² gerekiyor. Java bunu sa≡l²yor. Java ile sadece Internet ⁿzerinde τal²■an programlar geli■tirmiyorsunuz. Mesela sizin bir muhasebe program²n²z var. Bu program² Windows ⁿzerinde yazd²ysan²z sadece Windows'ta τal²■abilir. E≡er mⁿ■terinizde bir Macintosh veya bir Unix i■letim sistemi varsa bu program² τal²■t²ramaz. E≡er bu muhasebe program²n² Java ile yazarsan²z, kim olursa olsun sizin program²n²z² τal²■t²rabilir. JVM bir yorumlay²c² ve hiτ bir yorumlay²c² EXE hale gelmi■ bir programdan daha h²zl² τal²■amaz. Ama gⁿnⁿmⁿzde i■lemci performanslar²n²n her on sekiz ayda bir ikiye katland²≡²n² dⁿ■ⁿnⁿrsek bu h²z sorununu yak²n zamanda a■aca≡²z demektir. Ayr²ca daha ba■ka geli■meler de var. Mesela bir τok firma Java'y² daha h²zl² τal²■t²rmak iτin Just-in-time derleyiciler τ²kard². Bu derleyiciler Java program²n²z² Internet'ten τekti≡iniz zaman ya da τal²■t²rmak istedi≡inizde derleyerek EXE hale getiriyor ve b÷ylece program²n²z gayet h²zl² ■ekilde τal²■²yor. Java'y² geli■tiren Sun ise ayn² zamanda i■lemci de ⁿreten bir firma ve Java'n²n performans²n² artt²rmak iτin Java kodunu direkt olarak τal²■t²rabilen i■lemciler ⁿzerinde τal²■²yor. picoJava denilen bu τekirdek i■lemci mimarisi her tⁿrlⁿ i■lemcinin iτerisine eklenebiliyor. ▐u anda τe■itli alanlarda i■lemci ⁿreten 10'un ⁿzerinde firma picoJava'y² kullanmak iτin Sun ile anla■t². Ne yaz²k ki bu firmalar aras²nda Intel, AMD ve Cyrix gibi x86 uyumlu i■lemci ⁿreten firmalar yok. Ama Java'n²n yayg²nla■mas²yla bu firmalar da Java'y² i■lemcilerine entegre edebilirler. S: Peki, bu picoJava denilen ■ey PC'lerde kullan²lmayacaksa nerede kullan²lacak? Bilgisayara sadece PC'den ibaret de≡il. Bu firmalar²n ⁿretti≡i i■lemciler geτti≡imiz aylarda dergimizde de ad²ndan bahsedilen NC adl² bilgisayarlardan telefonlara kadar τe■itli elektronik araτ iτerisinde kullan²lacak. Asl²na bakarsan²z ■u anda teorik olarak τal²■²yor. Her yaz²l²m ⁿrⁿnⁿnde oldu≡u gibi Java'n²n da sⁿrⁿmleri var. Java'n²n ilk sⁿrⁿmⁿ bundan yakla■²k 1.5 y²l ÷nce Java Development Kit (JDK) 1.0 olarak τ²kt². JDK'da bir τok konuda kullan²lmak ⁿzere geli■tirilmi■ Java nesne s²n²flar² bulunuyor. Daha sonra bu sⁿrⁿmⁿ JDK 1.01 ve JDK 1.02 olmak ⁿzere iki dⁿzeltme sⁿrⁿmⁿ izledi. JDK 1.0x sⁿrⁿmleri Java'n²n temel ÷zellikleri, kullan²c² arabirimine sahipti ve daha τok ufak τapl² uygulamalar iτin kullan²labilecek dⁿzeydeydi. Geτti≡imiz aylarda Sun, JDK'n²n 1.1 sⁿrⁿmⁿnⁿ τ²kard². Bu sⁿrⁿm ile Java, 10-15 milyon dolarl²k bⁿyⁿk mainframe bilgisayarlardan ■u cep telefonlar²nda da kullan²lan ak²ll² kartlara kadar her yerde kullan²labilir hale geldi. S: Java ile sadece ufak tefek oyun benzeri programlar yap²labiliyor diye duyduk. Nedir bunun do≡rusu? E≡er sadece b÷yle ■eyler yap²labiliyorsa ne i■imize yarayacak bu Java? JDK 1.1 iτin bu belki do≡ru bir ■eydi fakat 1.5 y²l iτerisinde Java'da τok bⁿyⁿk geli■meler oldu. Veritaban² uygulamalar², gⁿvenlik, sistem y÷netimi, ticari uygulamalar konusunda Java'ya yap²lan eklemelr ile belki de bir programla dili ilk kez bu kadar geni■ bir firma deste≡i taraf²ndan bu kadar k²sa bir zamanda kullan²m alanlar²n² geli■tirdi. Sun, her biri kendi alan²nda lider konumda olan bir τok firma ile g÷rⁿ■ⁿp bu firmalar ile yapt²≡² ortak τal²■malar sonunda Java nesne kⁿtⁿphanesini geli■tirdi. PCWorld okuyucunun en τok ilgilenee≡i konu olan veritaban² deste≡ine gelirsek. Java'n²n veritabanlar² ile ileti■im kurmas²n² sa≡layan JDBC (Java Database Connectivity - Java veritaban² ba≡lant²s²) protokolleri var. JDBC belli ba■l² kurumsal veritabanlar² olan Oracle, Informix, Sybase gibi veri tabanlar²n² direkt olarak destekliyor. Bunun yan²s²sa JDBC, bugⁿn en kⁿτⁿ≡ⁿnden en bⁿyⁿ≡ⁿne kadar hemen hemen her veritaban²n²n uyumlu oldu≡u ODBC'yi destekliyor. B÷ylece Java ile istedi≡iniz bⁿyⁿklⁿkte veritaban² uygulamas² yazman²z mⁿmkⁿn. ▌ster bir muhasebe paketi yaz²n, ister basit bir fihrist, isterseniz de bir devasa bir ⁿretim planlama paketi. Java bunlar²n hepsini destekliyor. Mesela τok bⁿyⁿk ■irketlerde kullan²lan SAP R/3 ⁿretim planlama yaz²l²m²n² SAP en ba■tan Java ile yaz²yor. Sadece SAP de≡il, dⁿnya yaz²l²m sekt÷rⁿnⁿn tⁿm bⁿyⁿk firmalar² bu konu ⁿzerinde τal²■²yorlar ve baz²lar² ⁿrⁿnlerini Java ⁿzerine ta■²maya ba■lad² bile. Bu da Java'n²n ne kadar gⁿτlⁿ oldu≡unun bir g÷stergesi. S: Internet'e pek gⁿven olmaz. Peki, Java gⁿvenli mi? Yani Internet'ten bir Java program² τekti≡imizde sabit diskimizi filan formatlamas²n da! Java iki y÷nden de gⁿvenli bir ortam. Birincisi Java i■letim sisteminden ba≡²ms²z bir programlama dili oldu≡u iτin sisteminize direkt olarak eri■emez. E≡er bir Java program² sabit diskinizi formatlamak gibi istenmedik bir i■lem yapmaya kalkarsa JVM bunu engeller. Ayr²ca Java programlar²n²n τal²■²rken ba■ka programlar² etkilemesi de s÷z konusu de≡ildir. Bu yⁿzden Java programlar²na Java ile yaz²lm²■ bir virⁿs bula■sa bile bu virⁿsⁿn istenmedik bir ■ey yapmas²na imkan yok. Do≡al olarak Intenet ⁿzerindeki hiτ bir bilgi yⁿzde yⁿz gⁿvenli olarak seyahat edemez. Java tabanl² bir uygulama ⁿzerinden bilgi g÷nderdi≡inizde bunun ba■kas² taraf²ndan g÷rⁿlmeyece≡ine de garanti vermezsiniz; fakat Java bu riski minimuma indiriyor. ╟o≡u ■ifreleme sistemini destekleyen JDK 1.1 ayr²ca Visa, EuroCard ve MasterCard'²n ortak geli■tirdi≡i ve Internet ⁿzerinde elektronik ticaret yapmada kullan²lacak olan SET protokolⁿnⁿ de destekliyor. Yani Java hem sisteminize zarar vermeme aτ²s²ndan, hem de Internet'e aτt²≡²n²z bilgilerinizin aτ²s²ndan gⁿvenli bir ortam. S: Java'y² kullanmaya karar verdim diyelim. Bu dilin yap²s² nas²ld²r? Visual Basic'e mi yoksa ba■ka bir ■eye mi benziyor? Visual Basic gibi g÷rsel programlama ÷zellikleri var m²? Java ⁿτⁿncⁿ ku■ak nesne tabanl² bir programlama dili. Java'y² geli■tiren Sun firmas² asl²nda programlar²n² geli■tirirken C++ kullan²yordu fakat bu dilin malum bir tak²m zorluklar²n² a■mak iτin oturup kendi programlama dillerini yazmaya karar veriyorlar. Java programlama mant²≡² olarak C++'a τok benziyor. De≡i■ken tan²mlar², fonksiyon yap²s² ve nesneleri de yine C++'tan araklanm²■. Daha ÷nceden C veya C++ kulland²ysan²z Java'y² ÷≡renmeniz τok daha kolay fakat hiτ programlama yapmam²■ bir ki■i de fazla zorlanmadan Java'y² ÷≡renebilir. G÷rsel araτ taraf²na gelince, Visual Basic iτin sadece bir tane g÷rsel uygulama geli■tirme arac² var, oysa Java iτin piyasada 20'ye yak²n bⁿyⁿklⁿ kⁿτⁿklⁿ araτ bulunuyor. Bir bu kadar² da beta a■amas²nda ve yak²nda τ²kacak. ╓rnek vermek gerekirse, Symantec'in Visual CafΘ ve Visual CafΘ Pro'sunu, Sun'²n Java WorkShop'unu sayabiliriz. Microsoft'un da Visual J++ isimli bir arac² var ama fakat ne kadar g÷rsel oldu≡u tart²■²l²r. ╟²kacak olanlara bakarsak IBM'in VisualAge for Java's² kod bile yazmadan Java programlar² geli■tirmenize izin veriyor. Borland ise Delphi'deki tecrⁿbesini, yak²nda τ²kacak olan Open Jbuilder isimli arac²nda kullan²yor. S: Java ile yazd²≡²m programlar her tⁿrlⁿ sistemde τal²■²yor. Peki, her sistem iτin ayr² bir ekran tasar²m² yapmaya gerek yok mu? Mesela bir pencere aτt²≡²m²zda Windows'un penceresi ile Unix'in penceresi veya veri giri■ kutusu ayn² de≡il ki, yazd²≡²m program²n ekranlar² ayn² olsun. Java'n²n kendine ÷zgⁿ API'lar² (Aplication Programming Interface - Uygulama programlama Arabirimi) var. Siz bir pencere aτarken, bir tu■ veya bir listeleme kutusunu τa≡²r²rken Windows'un, Unix'in veya OS/2'nun de≡il Java'n²n penceresini, listeleme kutusunu veya tu■unu τa≡²r²yorsunuz. B÷ylece yazd²≡²n² program²n farkl² sistemlerde τal²■mas²n² kontrol etmek zorunda de≡ilsiniz. Program²n²z² yazd²ktan sonra diyelim ki Windows kullanan birisi τal²■t²r²rsa Web browser'² ⁿzerinde yⁿklⁿ olan JVM, sizin program²n²z²n Pencere aτmak istedi≡ini veya listeleme kutusu kulland²≡²n²z² g÷rⁿp, Windows'un o fonksiyonunu τa≡²r²yor. OS/2 kullanan birisi program²n²z² al²■t²r²rsa OS/2 Warp 4 Java'y² Web browser'a ihtiyaτ duymadan destekledi≡i iτin i■letim sistemi iτerisindeki JVM program²n²zdaki koda g÷re i■letim sistemi fonksiyonlar²n² τa≡²r²yor. S: Bir de JavaBeans denilen bir ■ey varm²■. Bu da bir τe■it Java program² m² yoksa apayr² bir ■ey mi? JavaBeans, Java nesne teknolojisine verilen bir ad. Java ile yaz²lan programlar²n birbirleri ile ileti■im kurmas², bu program parτalar²n²n ba■ka programlarda tekrar kullan²labilmesi iτin bir dizi kurallara uymas² gerekiyor. Bunun iτin Sun, JavaBeans'i geli■tirdi. Kelime anlam² olarak da Java yani kahve taneleri demek. Ne i■e yarayaca≡²na gelince, bir τok firma JavaBeans'e uygun Java programc²klar² ve Java nesneleri, genel bir ad vermek gerekirse Java bile■enleri geli■tiriyor. Bu Java bile■enleri aras²nda neler yok ki, hesap tablosu bile■eninden kelime i■lemciye, g÷rⁿntⁿ oynat²c²dan ses kaydedici bile■enlere kadar her ■ey var. Java programc²lar² bu bile■enleri kaynak kodunu bile g÷rmeden istedikleri gibi programlar²nda kullanabiliyor, bunu da bu bile■enlerin JavaBeans olmas² sa≡l²yor. Peki bu bile■enleri nereden bulaca≡²z? Bile■enlerin bir k²sm² standart olarak JDK iτerisinde var, bir k²sm²n² ise g÷rsel Java uygulama geli■tirme araτlar² ⁿretenler yaz²yor veya yazan firmalardan sat²n al²yor. Bir k²sm² ise paras²n² say²p alman²z gerekiyor. E≡er siz kendiniz bir JavaBean yazmak istiyorsan²z, bunu herhangi bir Java program² gibi yaz²yorsunuz ve derleyicinize bunu JavaBean olarak derle diyorsunuz o da Java program²n²z² bir JavaBean haline getiriyor. JavaBeans'i destekleyen g÷rsel araτlar²n belli ba■l²lar²n² sayarsak Borland Open Jbuilder, IBM Applet Author, IBM VisualAge for Java, Sun Java WorkShop, Symantec Visual CafΘ. S: Ben program yazmak iτin Visual Basic'i kullan²yorum. ▐imdi oturup Java'y² ÷≡rendim diyelim. Bugⁿne kadar yazd²≡²m binlerce sat²r Visual Basic kodunu τ÷pe mi ataca≡²m? Visual Basic Windows platformuna ÷zel bir uygulama geli■tirme ortam². Java ise platform ba≡²ms²z bir dil. Ama Sun dⁿnyadaki milyonlarca Visual Basic programc²s²n² da kendi cephesine τekmek iτin Visual Basic uygulamalar²n² Java'ya d÷nⁿ■tⁿren bir τevirici ⁿzerine τal²■maya ba■lad². Bu y²l²n sonlar²na do≡ru Visual Basic programlar²n²z² Java'ya d÷nⁿ■tⁿrecek araτ piyasaya τ²km²■ olacak. Visual Basic kullan²c²lar² genelde ActiveX kontrollerini kullan²yor. JavaBeans de asl²nda ayn² ■ey. E≡er isterseniz Java iτerisinden ActiveX kontrollerini de kullanabilirsiniz fakat bunu pek tavsiye etmiyoruz; τⁿnkⁿ e≡er ActiveX kontrollerini kullan²rsan²z bu sefer yazd²≡²n²z program '%100 Saf Java' olmayacak. Bu da program²n²z²n her yerde τal²■mayaca≡² anlam²na geliyor. Her ne kadar Microsoft ActiveX'i Macintosh ve Unix platformlar²na da ta■²maya ba■lad²≡²n² s÷ylese de ActiveX'ler Java kadar yayg²n de≡il. S: Java'n²n ak²ll² kartlardan dev bilgisayarlara kadar her yerde τal²■t²≡²n² s÷ylemi■tiniz. Hadi bilgisayar² anlad²k da bu kart ne oluyor. Kart iτerisine i■lemciyi nas²l s²≡d²r²yorlar da Java programlar²n² τal²■t²r²yor. Bir program²n τal²■mas² iτin tabii ki bir i■lemciye ihtiyaτ var. Ama i■lemci deyince akl²m²za sadece 5x5 cm ebatlar²nda iki veya ⁿτ milim kal²nl²≡²nda, alt²nda bir sⁿrⁿ aya≡² olan bir ■ey gelmesin. ▌■lemciler bugⁿn hayat²m²z²n bir τok noktas²na girmi■ durumda. En basitinden televizyonunuz iτerisinde, telefonunuz iτerisinde, incecik hesap makinan²z²n iτerisinde de i■lemci var. Ak²ll² kartlardaki i■lemci de i■te bu bizim bildi≡imiz fiziksel boyutlara uymayan i■lemcilerden birisi ve kart ⁿzerindeki sar² k²s²mda buluyor. Bu kartlar² τal²■t²rmak iτin de ya ÷zel ya da genel baz² programlama dillerinde programlar yaz²l²yor. Bu i■lemcinin yapabilece≡i ■eyler de tabii ki s²n²rl². Java ak²ll² kartlar ⁿzerinde bile τal²■²yor derken ak²ll² kartlar²n τal²■t²raca≡² program²n Java ile de yaz²labilece≡ini anlatmak istedik. JDK 1.1'de SmartCard API'lar² da bulundu≡u iτin ak²ll² kartlar iτin program yazmak da oldukτa kolayla■²yor. Java Internet ile beraber yayg²nla■t²≡² iτin daha yayg²n olarak Internet araτlar² ⁿzerinde τal²■²yor. Bir τok ki■i her tⁿrlⁿ arac²n birbiri ile Internet ⁿzerinden ileti■im kurabilece≡i bir dⁿnyadan bahsediyor. Bu araτlar iτerisinde bilgisayar, telefon, faks oldu≡u kadar televizyon, τama■²r makinesi, f²r²n, klima gibi gⁿnlⁿk hayat²m²zda s²kτa kulland²≡²m²z ev ve ofis e■yalar² da var. Mesela sabah f²r²na bir tavuk koyuyorsunuz, ak■am ⁿzeri saat d÷rtte i■yerinizdeki bilgisayar²n²zdan evdeki f²r²n²n²z ile ileti■im kurup f²r²na tavu≡u hangi programda, kat dakika pi■irece≡ini belirtiyorsunuz ve eve gitti≡inizde tavu≡unuz pi■mi■ oluyor. Veya k²■ aylar²ndan birinde i■ iτin gitti≡iniz bir ak■am yeme≡inden τ²k²yorsunuz ama ev ■imdi buz gibidir. Hemen yan²n²zdaki notebook'unuz ile cep telefonunu da kullanarak Internet'e ba≡lan²p kat kaloriferinizi yak²yorsunuz. Eve gidip kap²y² aτ²nca s²cac²k bir hava yⁿzⁿne τarp²yor. ▌■te tⁿm bu araτlar² kullanabilmek iτin Java bulunmaz bir f²rsat. Gerτi ■u anda bu sayd²≡²m²z ev e■yalar² bu tip uzaktan y÷netim iτin uygun de≡il ama bir kaτ y²l iτerisinde gerek kahverengi e■ya, gerekse beyaz e■ya ve di≡er ev ve ofis araτlar² olsun, hepsi uzaktan y÷netime haz²r olacak. Yine bu sⁿre zarf²nda Amerika'da yayg²nla■an evlerin de Internet'e kiral²k hatlarla ba≡lanmas² tⁿm dⁿnyaya yay²lacak. S: Ev e■yas², ofis e■yas² dediniz de, ■u son zamanlarda ad²n² duydu≡umuz WebTV'ler Java programlar²n² τal²■t²rabilecek mi onu merak ettim. WebTV'ler browser tabanl² araτlar olarak piyasaya sⁿrⁿlecek ve haliyle Java ile yaz²lm²■ uygulamalar² da destekleyecekler. Bu aletlerin Java ile olan ili■kisi asl²nda daha da yak²n. Biraz ÷nce bahsetti≡imiz gibi Sun, i■lemcilerin Java programlar²n² daha h²zl² τal²■t²rabilmesi iτin picoJava diye bir τekirdek i■lemci mimarisi geli■tirdi. Televizyon ve WebTV gibi araτlar iτin i■lemci ⁿreten bir kaτ i■lemci ⁿreticisi firma da bu kodun lisans²n² Sun'dan ald² ve picoJava kodu iτeren i■lemciler ⁿzerinde τal²■maya ba■lad²lar. Bir kaτ y²l iτerisinde bu tip araτlar Java'y² i■lemci seviyesinde desteklemi■ olacaklar. Bunun yarar² ne olacak diye sorarsan²z, Internet ⁿzerinden al²■ veri■ yapmak h²zla yayg²nla■²yor. Bu sayede evinizden oturdu≡unuz yerden al²■ veri■ yapman²z, τe■itli bilgi bankalar²na ba≡lan²p ara■t²rmalar yapman²z, banka i■lemlerini yapman²z mⁿmkⁿn hale geliyor. S: Java'n²n d²■²nda JavaScript diye bir ■eyden de bahsediyorlar. Nedir bu JavaScript? JavaScript ilk defa Netscape taraf²ndan geli■tirilen yeni bir script dilidir. Script dilini biraz aτmak gerekirse, derlenebilen bir programlama dili de≡il, mevcut program²n²z² geli■tirmek iτin kullanabilece≡iniz bir kodlar silsilesidir. Etkile■imli Web sayfalar² yaratman²za imkan tan²yan JavaScript ile yazd²≡²n²z scriptleri kolayca HTML sayfalar²n²za ekleyebilir ve τal²■t²rabilirsiniz. Bir zamanlar CGI (Comman Gateway Interface) d²■²nda hiτ bir scripting dili ile yap²lamaz denilen i■lemler, art²k JavaScript ile mⁿmkⁿn duruma geldi. JavaScript'in kullan²m kolayl²≡² o kadar benimsendi ki Web sitesi haz²rlayanlar iτin neredeyse vazgeτilmez bir dil durumuna d÷nⁿ■tⁿ. Internet ⁿzerinde gezinirken hemen her sitede 1-2 JavaScript kullanan yer bulabilirsiniz. Java appletler ve JavaScriptler konusunda en iyi kaynaklardan biri olan Gamelan bu konuyla ilgilenenlerin ilk u≡ramas² gereken Internet adreslerinden biri. http://www.gamelan.com adresinden JavaScript b÷lⁿmⁿne girdi≡inizde hem ÷rnek JavaScript sayfalar² bulabileceksiniz, hem de JavaScript kullanan baz² sitelerin adreslerine ula■abileceksiniz. S: Peki bu JavaScript'in Java'dan fark² ne? Birτok ki■i JavaScript'in Java oldu≡u konusunda yan²lg²ya dⁿ■er. Bunun en bⁿyⁿk sebebi ikisinin de Java kelimesini iτermesidir. Fakat bu kesinlikle yanl²■ bir dⁿ■ⁿnce. Bu yaz² boyunca neden JavaScript'in Java olmad²≡²n² anlayacaks²n²z. Ama hemen bir tan²mlama yapmak gerekirse, ■÷yle aτ²klayabiliriz: Java ve JavaScript Internet programc²l²≡² iτin kullan²lan iki de≡i■ik teknik. Bunlardan Java, bir programlama dilidir. JavaScirpt ise isminden de anla■²laca≡² gibi bir scripting dilidir. Aradaki en bⁿyⁿk fark, Java ile gerτek programlar - yani bildi≡imiz anlamda bilgisayarlar²m²zda kulland²≡²m²z programlar - yarat²labilmesi, ÷te yandan JavaScript ile gerτek bir program yaz²lamamas²d²r. JavaScript ile her ne kadar bildi≡imiz anlamda program yazamay²z desek de, JavaScript'in yetenekleri sayesinde Web ⁿzerinden oynanabilecek basit oyunlar, formlar, diyalog kutular² haz²rlanabilir. JavaScript genel olarak JavaScript yazarlar² taraf²ndan bir HTML uzant²s² yani HTML dilinin bir parτas² olarak g÷rⁿlⁿr. S: Tamam JavaScript'in ne oldu≡unu ÷≡rendik. Peki bu JavaScript'leri nas²l τal²■t²raca≡²z? JavaScript ile yaz²lan scriptleri τal²■t²rmak iτin tek ihtiyac²n²z olan ■ey, JavaScript deste≡i olan bir Web taray²c²d²r (browser). ╓rnek vermek gerekirse Netscape Navigator 2.0 sⁿrⁿmⁿnden, Microsoft Internet Explorer ise 3.0 sⁿrⁿmⁿnden itibaren JavaScript'i desteklemektedir. Bu iki browser τok geni■ bir Internet kullan²c² kitlesine hitap etti≡i iτin, JavaScript'leri art²k hemen her Internet kullan²c²s² τal²■t²rabilir diyebiliriz. S: Bu JavaScript'leri haz²r HTML sayfalar²nda nas²l kullanaca≡²z? JavaScript kodlar² kolayca HTML sayfalar²na eklenebilir. A■a≡²da, basit bir HTML sayfas²n²n iτinde kullan²lm²■ kⁿτⁿk bir JavaScript ÷rne≡i g÷receksiniz. <html> <body> <br> Bu normal HTML'dir. <br> <script language="JavaScript"> document.write("Bu ise JavaScript'dir!") </script> <br> Buras² yine HTML'dir. </body> </html> ▌lk bak²■ta yukar²daki ÷rnek normal bir HTML dosyas² gibi g÷rⁿnⁿyor. Buradaki as²l JavaScript kodu ■unlard²r: <script language="JavaScript"> document.write("Bu ise JavaScript'dir!") </script> A■a≡²da ise yukar²da verdi≡imiz ÷rne≡in JavaScript deste≡i olan bir browser'daki τ²kt²s²n² g÷receksiniz. Bu normal HTML'dir Bu ise JavaScript'dir! Buras² yine HTML'dir. Bu noktada s÷ylemeliyiz ki, bu tⁿr bir JavaScript'i yukar²daki gibi kullanmak pek pratik bir y÷ntem de≡ildir. ╟ⁿnkⁿ bu i■i sadece HTML kullanarak da yapabilirdiniz. ╓rne≡in verilmesindeki tek amaτ size <script> komutunun τal²■ma mant²≡²n² g÷stermekti. <script> ve </script> komutlar² aras²nda yaz²lan her ■ey browser'lar taraf²ndan JavaScript kodu olarak alg²lanarak i■lem g÷rⁿr. Bu ilk basit ÷rnekten sonra JavaScript'in daha yo≡un kullan²ld²≡² fonksiyonlar² inceleyelim. JavaScript fonksiyonlar² HTML sayfan²zda <head> ve </head> komutlar² aras²nda yer al²r. Bu sayede yazd²≡²n²z fonksiyonlar ekrana τ²kacak her ÷≡eden ÷nce haf²zaya yⁿklenir ve kullan²c² bir fonksiyonu τa≡²rd²≡²nda fonksiyon haz²r olur. <html> <head> <script language="LiveScript"> function pushbutton() { alert("Selam!"); } </script> </head> <body> <form> <input type="button" name="Button1" value="Buraya Bas²n" onClick="pushbutton()"> </form> </body> </html> Bu script bir dⁿ≡me yarat²r. Bu dⁿ≡meye bast²≡²n²zda iτinde "Selam!" yaz²l² bir diyalog penceresi aτar. "PushButton" isimli fonksiyonumuz <head> ve </head> komutlar² aras²nda oldu≡u iτin ÷nceden haf²zaya yⁿklenir. Arkas²nda <form> HTML komutu ile bir dⁿ≡me yarat²l²r. "onClick" komutu ise dⁿ≡meye bast²≡²n²zda "PushButton" fonksiyonunu τal²■t²rmas²n² sa≡lar. ╟al²■t²rd²≡²m²z fonksiyon ise "alert" komutu ile bir diyalog penceresi aτar ve iτine "Selam!" yazar. S: Peki ya biz JavaScript'i desteklemeyen bir browser kullan²yorsak? Yaz²m²z²n ba■²nda her browser'²n JavaScript'i desteklemedi≡inden bahsetmi■tik. JavaScript'i desteklemeyen browser'larda yazd²≡²n²z tⁿm JavaScipt sat²rlar² aynen g÷rⁿnⁿr ve sayfan²z²n tⁿm g÷rⁿntⁿsⁿnⁿ bozar. Bunun τ÷zⁿmⁿ yok mu diye merak ediyorsan²z, tabii ki var. HTML dilinde s²kτa kullan²lan aτ²klama sat²r² komutu "<!--" "-->" ile yazd²≡²n²z script'lerin eski browser'larda g÷rⁿnmemesini sa≡layabilirsiniz. Hem script'lerimizi JavaScript'i desteklemeyen browser'lardan gizleyen hem de kullan²c²dan ald²≡² bilgiyi sayfaya yans²tan iki ÷rnekle devam edelim. 1. ╓rnek: <html> <head> <script language="LiveScript"> <!-- JavaScipt'i desteklemeyen eski browser'lar iτin gizlemeyi ba■lat²r. function getname(str) { alert("Selam, "+ str+"!"); } // JavaScipt'i desteklemeyen eski browserlar iτin gizlemeyi bitirir. --> </script> </head> <body> ▌sminizi Giriniz: <form> <input type="text" name="name" onBlur="getname(this.value)" value=""> </form> </body> </html> Dikkatinizi τekece≡i gibi, <script language="LiveScript"> sat²r²n²n hemen alt²ndaki sat²rda <!-- diye bir komut kulland²k. Bu komut sayesinde JavaScript'in desteklenmedi≡i browser'larda bu scriptler g÷zard² edilir. ╓rne≡imizin ne yapt²≡²n² merak ediyorsan²z size ÷nce isminizi sorar arkas²ndan da aτaca≡² bir diyalog penceresinde "Selam, isminiz" yazar. 2. ╓rnek: <html> <body> <br> Bu normal HTML'dir. <br> <script language="JavaScript"> <!-- JavaScipt'i desteklemeyen eski browserlar iτin gizlemeyi ba■lat²r. document.write("Bu ise JavaScript'dir!") // JavaScipt'i desteklemeyen eski browserlar iτin gizlemeyi bitirir. --> </script> <br> Buras² yine HTML'dir. </body> </html> JavaScript'i desteklemeyen bir browser'da yukar²daki kodumuz a■a≡²daki gibi g÷rⁿnecektir: Bu normal HTML'dir. Buras² yine HTML'dir. E≡er script'imizi eski browser'lardan saklamasayd²k a■a≡²daki gibi g÷rⁿnecekti: Bu normal HTML'dir. document.write("Bu ise JavaScript'dir!") Buras² yine HTML'dir. Dikkat edilmesi gereken ■ey, JavaScript kodunun tamamen saklanamamas²d²r. Bizim burada yapt²≡²m²z sadece yazd²≡²m²z script'in τ²kt²s²n²n ekrana gelmesini engellemektir. Kullan²c² browser'²ndan G÷rⁿnⁿm*Kaynak seτene≡i ile tⁿm sayfalar²n²z²n iτinde yazanlar² okuyabilir. S: JavaScript gⁿzel bir ■eye benziyor. Hem bu dili daha iyi anlamam, hem de haz²rlad²≡²m Web sayfas²nda kullanmam iτin birkaτ ÷rnek verir misiniz? Birτok ki■inin ho■una gidece≡ini ve i■ine yarayaca≡²n² dⁿ■ⁿndⁿ≡ⁿmⁿz di≡er bir ÷rnek ise tarih fonksiyonu. ╓rne≡in haz²rlad²≡²n²z her sayfan²n sonuna "En son gⁿncelleme Tarihi: xx/xx/xxxx" gibi bir sat²r ekliyorsunuz. O zaman bunu her seferinde elle gⁿncellemenize gerek yok. Yazaca≡²n²z kⁿτⁿk bir JavaScript ile tarihin oraya otomatik olarak yaz²lmas²n² sa≡layabilirsiniz. <html> <body> Buras² normal HTML sayfas²d²r... <br> En son gⁿncelleme tarihi: <script language="LiveScript"> <!-- JavaScript'in desteklenmedi≡i browserlardan script'I saklar. document.write(document.lastModified) // saklaman²n bitti≡i yer --> </script> </body> </html> Bu script yⁿzde 99 oranla her makinede τal²■sa da, baz² server'lar kullan²c²lara sadece 1/1/1970 tarihini g÷nderirler. Fakat kullanmadan ÷nce script'i kendi server'²n²zda test ederek sizde τal²■²p τal²■mad²≡²n² anlayabilirsiniz. ▌kinci ÷rne≡imiz ise sizin server'²n²z²n sistem saati ve tarihini okur. Burada unutmaman²z gereken, sizin sayfalar²n²za ba■ka ⁿlkelerden ba≡lananlar²n yerel saatleriyle sizin saatinizin farkl² olabilece≡i. O yⁿzden bu tip script'lerin τ²kt²lar²nda saatin ve tarihin yerel oldu≡unu belirtmek daha do≡ru olacakt²r. <script language="JavaScript"> <!-- JavaScript'I saklar today = new Date() document.write("Saat: ",today.getHours(),":",today.getMinutes()) document.write(" Tarih: ", today.getMonth()+1,"/",today.getDate(),"/",today.getYear()); // saklamay² bitirir --> </script> Yukar²daki ÷rne≡imizin ekrandaki τ²kt²s² a■a≡²daki gibi olacakt²r: Saat: 5:27 Tarih: 3/25/97 OnMouseOver ╓zelli≡i: OnMouseOver JavaScript'te yine τok fazla kullan²lan kullan²■l² bir komuttur. ╓rne≡in a■a≡²daki ÷rnek ekrana "Ana Sayfa" yazar ve bu yaz²y² bir link haline getirir. HTML dilinden bildi≡iniz gibi bu linkler bir sayfadan ba■ka sayfaya geτmek iτindir. Normalde biz "onMouseOver" komutunu kullanmasayd²k browser'²m²z²n durum τubu≡unda o linkin ⁿzerine fare ile gitti≡imizde gidilecek olan sayfan²n ismi yazacakt² (anasayfa.htm). Fakat onMouseOver sayesinde durum τubu≡una daha anla■²l²r bir yaz² yazd²rd²k: "Bu link sizi ana sayfaya geri d÷ndⁿrⁿr" <a href="anasayfa.htm" onMouseOver="window.status='Bu link sizi ana sayfaya geri d÷ndⁿrⁿr...';return true"> Ana Sayfa </a> Bu konudaki ikinci ÷rne≡imiz ise yine fare ile bir linkin ⁿzerine geldi≡imizde bir uyar² penceresi aτt²rmak: <html> <head> <script language="JavaScript"> <!-- Hiding function hello() { alert("Dikkat!"); } // --> </script> </head> <body> <a href="" onMouseOver="hello()"> Buraya T²klamay²n²z!.. </a> </body> </html> Yeni Bir Explorer Penceresi Aτmak JavaScript'in etkileyici ÷zelliklerinden biri de yeni pencereler yaratmas²d²r. ╓nce a■a≡²daki ÷rne≡i bir inceleyelim: <html> <head> <script language="JavaScript"> function WinOpen() { msg=open("","DisplayWindow","toolbar=no,directories=no,menubar=no"); msg.document.write("<HEAD><TITLE>Yeni Pencere!</TITLE></HEAD>"); msg.document.write("<CENTER><h1><B>Art²k Yeni Pencereler Aτmak ╟ok Kolay ! </B></h1></CENTER> "); } </script> </head> <body> <form> <input type="button" name="Button1" value="Buraya Bas²n" onclick="WinOpen()"> </form> </body> </html> Bu tip ÷rneklerde hep oldu≡u gibi burada da yine bir fonksiyon kullan²ld². WinOpen fonksiyonu "open" y÷ntemi ile yeni bir Explorer penceresi aτar. open("","... ile ba■layan sat²rda g÷rdⁿ≡ⁿnⁿz gibi iki tane t²rnak var yan yana. Bu iki t²rnak aras²nda bir HTML sayfas² ismi yazsayd²k o sayfa yⁿklenecekti yeni aτ²lan browser'a. Fakat yeni aτ²lacak pencereye haz²r bir HTML sayfas² yⁿklemek zorunda de≡ilsiniz. Yukar²daki ÷rne≡imizde oldu≡u gibi msg.document.write komutu ile yⁿklenecek olan sayfan²n iτeri≡ini ÷nceden haz²rlayabiliriz. Aτ²lacak olan pencerenin boyutunu veya ne ÷zelliklerle aτ²laca≡²n² da aτ²lmadan belirleyebiliriz. A■a≡²daki sat²r ile ÷rne≡in araτ τubu≡unun g÷rⁿnmemesi sa≡lanm²■. msg=open("","DisplayWindow","toolbar=no,directories=no,menubar=no"); Bunun gibi yeni pencere aτt²≡²n²zda oynayabilece≡iniz ÷zellikler ■unlard²r: Toolbar, location, directories, status, menubar, scrollbars, resizable, copyhistory, width=pixels, height=pixels Width ve height ile aτ²lacak olan yeni browser pencerenizin boyutunu pixel cinsinden belirleyebilirsiniz. |